# -*- coding: utf-8 -*-
# coding: utf-8
"""
根据前端请求中的 index 从本地 CSV 文件提取数据并返回
"""

from flask import request, jsonify
from flask_restful import Resource
import os
import pandas as pd
from datetime import datetime  # 导入 datetime 模块

# 获取当前文件的目录
BASE_DIR = os.path.dirname(os.path.abspath(__file__))

# 定义相对路径，并转换为绝对路径
DATA_FILE_PATH = os.path.join(BASE_DIR, '../Data/input/reflow_updatedata.csv')

# 确保数据文件存在
if not os.path.exists(DATA_FILE_PATH):
    raise FileNotFoundError(f"数据文件 {DATA_FILE_PATH} 不存在")


class rfPCBData(Resource):
    def post(self):
        # 确保请求头是正确的 JSON 格式
        if request.content_type != 'application/json':
            return jsonify({"message": "Content-Type must be application/json"}), 400

        # 获取请求中的 JSON 数据
        data = request.get_json()

        # 检查请求体是否为空
        if data is None:
            return jsonify({"message": "Invalid JSON, unable to parse the request body"}), 400

        # 提取 index 参数
        index = data.get('index')

        # 检查是否传递了有效的 index
        if index is None:
            return jsonify({"message": "No index provided"}), 400

        # 读取 CSV 文件
        try:
            df = pd.read_csv(DATA_FILE_PATH)
        except Exception as e:
            return jsonify({"message": f"Error reading CSV file: {str(e)}"}), 500

        # 确保 index 在数据范围内
        if index < 0 or index >= len(df):
            return jsonify({"message": f"Index {index} out of range"}), 400

        # 获取对应的行数据
        row_data = df.iloc[index]

        # 将 NaN 值替换为 None
        row_data = row_data.where(pd.notnull(row_data), None)

        # 将该行数据转为字典，以便 JSON 序列化
        result = row_data.to_dict()

        # 获取当前时间
        current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')

        # 使用 jsonify 返回响应
        return jsonify({"message": "Success", "data": result, "time": current_time})